package com.cn.wanxi.util;

import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter("/*")
public class MyFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("fadsfa");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//        1.处理乱码
        HttpServletRequest req = (HttpServletRequest) servletRequest;
        HttpServletResponse resp = (HttpServletResponse) servletResponse;
        resp.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");
        resp.setHeader("Access-Control-Allow-Credentials", "true");
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
//        resp.setContentType("application/json; charset=utf-8");
        String path = req.getServletPath();
        System.out.println(path);
        if (path.startsWith("/back/")) {
            String aa = req.getParameter("username");
            Jedis jedis = new Jedis();
            Object username = jedis.get(aa);
//            Object username = req.getSession().getAttribute(aa);
//            JSONObject jsonObject = new JSONObject();
            if (username != null) {
//                jsonObject.put("username", username);
//                resp.getWriter().println(jsonObject);
                filterChain.doFilter(req, resp);
            } else {
//                jsonObject.put("username", null);
                resp.getWriter().println(400);
            }

        } else {
            filterChain.doFilter(req, resp);//放行
        }

    }

    @Override
    public void destroy() {
        System.out.println("fadsfasd");
    }
    /**
     *  目的：必须登陆才能进入后台页面进行操作
     *  1.加载页面的时候需要调用后台数据
     *    manage.js。加载页面时去查询后台是否有用户
     *  2.servlet里面需要写一个类，去session里面去查询是否有值
     *  3.在myFilter里面首先做一个乱码处理。
     *  4.在后面判断访问后台的链接地址，是否属于放行的地址，不是，则查询是否登陆
     *  5.过滤器和拦截器的区别？
     *  6.servlet的生命周期？
     *  第四阶段内容：
     *  1.mysql
     *  2.流程图   用例图  类图  流程图
     *  3.用户注册  正则表达式  验证码
     *  4.后台逻辑关系   分层  业务控制层  服务逻辑层  数据展示层 JDBC
     *  5.增删查改  crud   create  read   update  delete
     *  6.模糊查查
     *  7.分页
     *  8.图片上传
     *  9.session认证
     *  10.多表查询  联合查询
     */
    /**
     * redis认证
     * 前端：1.登陆成功以后需要将当前用户名存到本地或者cookies
     * $.cookie("username",username);
     * 2.每一次访问后台时，需要将用户名带入到data里面去
     * data.username=$.cookie("username");
     * 后端：1.每一次登陆成需要将用户名存入到jedis
     * Jedis jedis=new Jedis();
     *             jedis.set(username, username);
     * 2.在过滤器里面增加一个得到当前用户名判断是否存在
     * String aa = req.getParameter("username");
     *             Jedis jedis = new Jedis();
     *             Object username = jedis.get(aa);
     */
}
